package negocios;


public abstract class ModoDeJogo
{
        /* Definição dos atributos da classe */
    
        // verbo sorteado pelo Gerrenciador de Verbos
	protected Verbo verboCerto;         // serve de referência para acerto
	protected FormaVerbal verboErrado1; // verbo para exibição complementar
	protected FormaVerbal verboErrado2; // verbo para exibição complementar
	// entidade auxiliar para a manipulação dos verbos
	protected GerenciadorDeVerbos gerenciadorDeVerbos;
	// entidade auxiliar para verificações de erros e acertos
        protected GerenciadorDeComparacao gerenciadorDeComparacao;
	// entidade auxiliar para o sorteio dos verbos apresentados ao jogador
        protected GerenciadorDeSorteio gerenciadorDeSorteio;
	
            /* Definição do construtor */
        
	public ModoDeJogo()
	{
		//Inicialização dos atributos de uma instância
		this.verboCerto = new Verbo();
		this.verboErrado1 = new Verbo();
		this.verboErrado2 = new Verbo();
		this.gerenciadorDeComparacao = new GerenciadorDeComparacao();
		this.gerenciadorDeVerbos = new GerenciadorDeVerbos();
		this.gerenciadorDeSorteio = new GerenciadorDeSorteio();
	}
        
        /* Definição dos métodos */

        // Início da declaração dos 'Getters' e 'Setters'
	public Verbo getVerboCerto()
	{
		return verboCerto;
	}

	public void setVerboCerto(Verbo verboCerto)
	{
		this.verboCerto = verboCerto;
	}

	public FormaVerbal getVerboErrado1()
	{
		return verboErrado1;
	}

	public void setVerboErrado1(FormaVerbal verboErrado1)
	{
		this.verboErrado1 = verboErrado1;
	}

	public FormaVerbal getVerboErrado2()
	{
		return verboErrado2;
	}

	public void setVerboErrado2(FormaVerbal verboErrado2)
	{
		this.verboErrado2 = verboErrado2;
	}
        // Fim da declaração dos 'Getters' e 'Setters'
	
	 // adiciona um registro de resposta do jogador
	public GerenciadorDeVerbos getGerenciadorDeVerbos()
	{
		return gerenciadorDeVerbos;
	}
	public GerenciadorDeSorteio getGerenciadorDeSorteio()
	{
		return gerenciadorDeSorteio;
	}
	public GerenciadorDeComparacao getGerenciadorDeComparacao()
	{
		return gerenciadorDeComparacao;
	}
	
	public abstract void confirmarJogada (String infinitive,String simple, String participle);
	public abstract void proximaJogada();
}
